package cn.maihe.elg.operation.repository.entity;

import cn.maihe.framework.starter.base.sql.BaseEntity;
import cn.maihe.framework.starter.base.sql.MapperInterface;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.FieldFill;
import com.baomidou.mybatisplus.enums.IdType;
import java.util.Date;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@TableName("t_guarantee_attachment_info")
@NoArgsConstructor
@AllArgsConstructor
@Data
@Builder
@MapperInterface("cn.maihe.elg.operation.repository.mapper.GuaranteeAttachmentInfoMapper")
public class GuaranteeAttachmentInfoDO extends BaseEntity {
    /**
     * 主键
     */
    @TableId(type = IdType.ID_WORKER)
    private Long id;

    /**
     * 交易中心组建
     */
    @TableField(value = "center_id")
    private Long centerId;

    /**
     * 机构主键id
     */
    @TableField(value = "org_id")
    private Long orgId;

    /**
     * 受理订单号全局唯一
     */
    @TableField(value = "accept_order_no")
    private String acceptOrderNo;

    /**
     * 附件类型 0完整ofd文件  2电子保函申请单 3企业资质文件 4企业营业执照文件 5基本户开户证明文件 6支付凭证 7到账证明 8电子保函pdf文件 9发票 10其他文件
     */
    @TableField(value = "type")
    private Integer type;

    /**
     * 文件名称
     */
    @TableField(value = "file_name")
    private String fileName;

    /**
     * 文件类型
     */
    @TableField(value = "file_type")
    private String fileType;

    /**
     * 文件md5值
     */
    @TableField(value = "file_md5")
    private String fileMd5;

    /**
     * 文件路径
     */
    @TableField(value = "file_path")
    private String filePath;

    /**
     * 备注说明
     */
    @TableField(value = "remark")
    private String remark;

    /**
     * 创建时间
     */
    @TableField(value = "gmt_create", fill = FieldFill.INSERT)
    private Date gmtCreate;

    /**
     * 更新时间
     */
    @TableField(value = "gmt_modified", fill = FieldFill.INSERT_UPDATE)
    private Date gmtModified;

    /**
     * 创建用户
     */
    @TableField(value = "user_create", fill = FieldFill.INSERT)
    private String userCreate;

    /**
     * 更新用户
     */
    @TableField(value = "user_modified", fill = FieldFill.INSERT_UPDATE)
    private String userModified;

    /**
     * 文件id失效后可通过接口重新下载
     */
    @TableField(value = "file_id")
    private String fileId;

    /**
     * 下载文件url地址
     */
    @TableField(value = "file_url")
    private String fileUrl;

    public GuaranteeAttachmentInfoVo buildVo() {
        return new GuaranteeAttachmentInfoVo(id, centerId, orgId, acceptOrderNo, type, fileName, fileType, fileMd5, filePath, remark, gmtCreate, gmtModified, userCreate, userModified, fileId, fileUrl);
    }

    public static GuaranteeAttachmentInfoDO of(GuaranteeAttachmentInfoVo vo) {
        return new GuaranteeAttachmentInfoDO(vo.getId(), vo.getCenterId(), vo.getOrgId(), vo.getAcceptOrderNo(), vo.getType(), vo.getFileName(), vo.getFileType(), vo.getFileMd5(), vo.getFilePath(), vo.getRemark(), vo.getGmtCreate(), vo.getGmtModified(), vo.getUserCreate(), vo.getUserModified(), vo.getFileId(), vo.getFileUrl());
    }
}
